﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using KOPLibrary.PreferenceManagement;
using KOPLibrary.TemplateManagement;
using System.IO;
using KOPLibrary.AutoComplete;
using KOPLibrary.Exceptions;
using KOPLibrary.DataManagement.Cacheflow;

namespace KOPLibrary.Forms
{
    public partial class PreferenceForm : Form
    {
        TemplateType type;
        public PreferenceForm(TemplateType ttype)
        {
            InitializeComponent();
            type = ttype;
            InitializeUI();
        }



        private void InitializeUI()
        {
            string rootpath = PreferenceManager.GetDefaulTemplatePath(type);
            ctlRootFolder.Text = rootpath;
            folderDialog.RootFolder = Environment.SpecialFolder.Desktop;
            if (Directory.Exists(rootpath)) folderDialog.SelectedPath = rootpath + "\\";
            folderDialog.ShowNewFolderButton = false;
            folderDialog.Description = "Klasör Seç";
            ctlCheckUpdate.Checked = (PreferenceManager.ReadKey("CheckUpdates") == "False") ? false : true;
        }



        private void ctlIptal_Click(object sender, EventArgs e)
        {
            this.Close();
        }




        private void ctlExport_Click(object sender, EventArgs e)
        {
            if (!File.Exists(AutoComplateManager.XmlPath))
            {
                MessageBox.Show("Verilecek bir hatırlama geçmişi dosyası bulunamadı", "Uyarı");
                return;
            }
            using (SaveFileDialog sfd = new SaveFileDialog())
            {
                sfd.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
                sfd.Title = "Hatırlama Geçmişi Kaydet";
                sfd.Filter = "Hatırlama Geçmişi Dosyası|*.xml";
                sfd.FileName = DateTime.Now.ToShortDateString() + " - " + "tarihli geçmiş";
                sfd.AddExtension = true;
                sfd.DefaultExt = "xml";
                sfd.OverwritePrompt = true;
                if (sfd.ShowDialog() == DialogResult.OK)
                {
                    try
                    {
                        File.Copy(AutoComplateManager.XmlPath, sfd.FileName, true);
                        MessageBox.Show("Geçmiş Başarıyla Verildi", "İşlem Sonucu");
                    }
                    catch (Exception ee)
                    {
                        ExceptionManager.ShowException(ee);
                    }
                }

            }
        }



        private void ctlClear_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("Bütün hatırlama geçmiş içeriği silincektir!" + Environment.NewLine + "Emin Misiniz?", "Uyarı", MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2) == DialogResult.Yes)
            {
                AutoComplateManager.List.Clear();
                if (File.Exists(AutoComplateManager.XmlPath)) File.Delete(AutoComplateManager.XmlPath);
                MessageBox.Show("İşlem başarıyla tamamlandı", "İşlemSonucu");
            }
        }

        private void ctlKaydet_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(ctlRootFolder.Text.Trim()))
                if (Directory.Exists(ctlRootFolder.Text.Trim()))
                {
                    PreferenceManager.SaveKeyToTypeRoot("DefaultTemplatePath", ctlRootFolder.Text.Trim(), type);
                }
                else MessageBox.Show("Seçilen klasör mevcut değil yada erişim izni yok","Uyarı");
            this.Close();
        }

        private void ctlFolderDialogButton_Click(object sender, EventArgs e)
        {
            if (folderDialog.ShowDialog() == DialogResult.OK)
            {
                ctlRootFolder.Text = folderDialog.SelectedPath;
            }
        }

        private void ctlImport_Click(object sender, EventArgs e)
        {
            using (OpenFileDialog ofd = new OpenFileDialog())
            {
                ofd.Filter = "Hatırlama Geçmişi Dosyası|*.xml";
                ofd.Title = "Hatırlama Geçmişi Al";
                ofd.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
                if (ofd.ShowDialog() == DialogResult.OK)
                {
                    if (File.Exists(ofd.FileName))
                    {
                        try
                        {
                            File.Copy(ofd.FileName, AutoComplateManager.XmlPath, true);
                            MessageBox.Show("Geçmiş Başarıyla Alındı", "İşlem Sonucu");
                        }
                        catch (Exception ee)
                        {
                            ExceptionManager.ShowException(ee);
                        }
                    }
                }
            }
        }

        private void ctlCheckUpdate_CheckedChanged(object sender, EventArgs e)
        {
            PreferenceManager.SaveKey("CheckUpdates", ctlCheckUpdate.Checked.ToString());
        }

        private void ctlCashFlowImport_Click(object sender, EventArgs e)
        {
            using (OpenFileDialog ofd = new OpenFileDialog())
            {
                ofd.Filter = "Nakit Akışı Dosyası|*.xml";
                ofd.Title = "Nakit Akışı Dosyası Al";
                ofd.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
                if (ofd.ShowDialog() == DialogResult.OK)
                {
                    if (File.Exists(ofd.FileName))
                    {
                        try
                        {
                            File.Copy(ofd.FileName, DataLayer.FlatFilePath, true);
                            MessageBox.Show("Dosya Başarıyla Alındı", "İşlem Sonucu");
                        }
                        catch (Exception ee)
                        {
                            ExceptionManager.ShowException(ee);
                        }
                    }
                }
            }
        }

        private void ctlCashFlowExport_Click(object sender, EventArgs e)
        {
            if (!File.Exists(DataLayer.FlatFilePath))
            {
                MessageBox.Show("Verilecek bir nakit akış dosyası bulunamadı", "Uyarı");
                return;
            }
            using (SaveFileDialog sfd = new SaveFileDialog())
            {
                sfd.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
                sfd.Title = "Nakit Akışı Dosyası Kaydet";
                sfd.Filter = "Nakit Akışı Dosyası|*.xml";
                sfd.FileName = DateTime.Now.ToShortDateString() + " - " + "Tarihli Nakit Akışı Dosyası";
                sfd.AddExtension = true;
                sfd.DefaultExt = "xml";
                sfd.OverwritePrompt = true;
                if (sfd.ShowDialog() == DialogResult.OK)
                {
                    try
                    {
                        File.Copy(DataLayer.FlatFilePath, sfd.FileName, true);
                        MessageBox.Show("Dosya Başarıyla Verildi", "İşlem Sonucu");
                    }
                    catch (Exception ee)
                    {
                        ExceptionManager.ShowException(ee);
                    }
                }

            }
        }

        private void ctlCashFlowDelete_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("Bütün nakit akış geçmişi silincektir!" + Environment.NewLine + "Emin Misiniz?", "Uyarı", MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2) == DialogResult.Yes)
            {                
                if (File.Exists(DataLayer.FlatFilePath)) File.Delete(DataLayer.FlatFilePath);
                MessageBox.Show("İşlem başarıyla tamamlandı", "İşlemSonucu");
            }
        }


    }
}
